BJDCTF2020 ZJCTF,不过如此*

ZJ Lv100

[BJDCTF2020]ZJCTF,不过如此*

前言

出自BUUCTF 练习场,也有相关的配套课本(我看的是《CTF实战 从入门到提升》,感觉还行,但有不少细节感觉还是得查资料才能懂)

题目

打开靶场,这里直接给出了源码,接下来要做的第一步就是代码审计≡(▔﹏▔)≡

image-20240914183912618

根据源码(..•˘_˘•..)

第一个if说明我们需要传入text=I have a dream才能进行下面的操作

下面一个if说明要传入一个file参数,不能传入flag字符防止直接拿到flag

后面可以看到有include($file),并且后面加上了注释next.php,表明需要用php伪协议来包含文件,而文件基本就是next.php

那具体怎么做呢?(•ิ_•ิ)

这里提供两种方法,一种是data伪协议,另一种是php://input

目前只提供如何提取出文件next.php,后续的涉及其他知识暂且放着,留个坑

data伪协议

BurpSuite里面,加上payload:?text=data:text/plain,I have a dream

解第一步if不一样之外,其他后面的内容都一样,这里就不重复了,接着往下看吧

php://input

BurpSuite里面,用php://input传入I have a dreamtext

image-20240914220642475

image-20240914220604923

这里只是完成了第一层if判断

接下来,对于要读取文件file参数,则传入php://filter/read=convert.Base64-encode/resource=next.php

解释一下这串payload

  • 使用的是php的filter协议,用于数据过滤
  • read后面跟上需要使用的过滤器,而这里的过滤器就是convert.Base64-encode,表明调用Base64过滤器对文件内容进行编码再输出
  • resource后面接输入的文件,文件会被读取然后以Base64的形式输出

image-20240914221239456

然后在改包的里面完成操作,读取next.php文件

image-20240914220915984

image-20240914221658927

取出这串字符,用Base64解码即可得到next.php文件,提供一个在线解码工具锤子

image-20240914221848920

image-20240914221833561

之后的代码审计暂时不做,留个坑在这

总结

这里需要掌握php的文件包含的知识,如果觉得自己不够掌握的推荐看一下PHP文件包含漏洞利用思路与Bypass总结手册 ,这里面基本涵盖了所有的情况,耐心阅读吧~

题目在这里

  • Title: BJDCTF2020 ZJCTF,不过如此*
  • Author: ZJ
  • Created at : 2024-09-14 00:00:00
  • Updated at : 2024-12-11 01:20:40
  • Link: https://blog.overlordzj.cn/2024/09/14/ctf/writeup/web/buuctf/[BJDCTF2020]ZJCTF-不过如此/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments